﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DisplayBoardInfoClient
{
    /// <summary>
    /// Klasa przechowująca listę pacjentów identyfikowanych numerem PESEL.
    /// </summary>
    public class PatientList
    {
        /// <summary>
        /// Słownik z pacjentami identyfikowanymi numerami PESEL.
        /// </summary>
        private static Dictionary<String, Patient> list = new Dictionary<string, Patient>();
        /// <summary>
        /// Dodaje nowego pacjenta do listy.
        /// </summary>
        /// <param name="p">Pacjent do dodania</param>
        public static void addPatient(Patient p){
            list.Add(p.PESEL,p);
        }
        /// <summary>
        /// Pobiera pacjenta z listy i zwraca otrzymany obiekt.
        /// </summary>
        /// <param name="PESEL">PESEL pacjenta którego obiekt należy pobrać</param>
        /// <returns>Uzyskany obiekt lub null jeżeli pacjent o podanym numerze PESEL nie został znaleźiony</returns>
        public static Patient getPatient(String PESEL){
            if(list.ContainsKey(PESEL)){
                return list[PESEL];}
            else
                return null;

        }
        /// <summary>
        /// Klasa przechowująca dane o pacjentach. Zawiera informacje wymagane do wyświetlania jak i identyfikowania pacjentów.
        /// </summary>
        public class Patient
        {
            /// <summary>
            /// Identyfikator pacjenta w bazie danych serwera.
            /// </summary>
            public String ID {get; set;}
            /// <summary>
            /// Imię pacjenta.
            /// </summary>
            public String Name { get; private set; }
            /// <summary>
            /// Nazwisko pacjenta.
            /// </summary>
            public String Surname { get; private set; }
            /// <summary>
            /// Numer PESEL pacjenta.
            /// </summary>
            public String PESEL { get; private set; }
            /// <summary>
            /// Konstruktor tworzący obiekt pacjenta. Zapisuje przekazane dane do pól klasy.
            /// </summary>
            /// <param name="name">Imię pacjenta</param>
            /// <param name="surname">Nazwisko pacjenta</param>
            /// <param name="pesel">PESEL pacjenta</param>
            /// <param name="id">identyfikator pacjenta w bazie danych</param>
            public Patient(String name, String surname, String pesel, String id)
            {
                Name = name;
                PESEL = pesel;
                Surname = surname;
                ID = id;
            }
        }

        /// <summary>
        /// Czyści listę z pacjentami.
        /// </summary>
        internal static void clear()
        {
            list.Clear();
        }
    }
}
